package com.zhj.structure.tree.utils;

/**
 * @PackageName:com.zhj.structure.tree.utils
 * @ClassName:BinaryTree
 * @auter: 朱慧杰
 * @date:2020/8/10 0010 10:02
 **/
public class BinaryTree {
    // 二叉树

    // 根节点
    private TreeNode root;

    public void setRoot(TreeNode root) {
        this.root = root;
    }

    public TreeNode getRoot() {
        return root;
    }

    /*
        -------------------遍历二叉树
        递归的思想：
        前序遍历 ： 1, 2,4,5, 3,6,7
        中序遍历 ： 4,2,5, 1, 6,3,7
        后序遍历 ： 4,5,2, 6,7,3, 1
     */

     public void frontShow() {
         System.out.println("前序遍历：");
         if (root!=null) {
             root.frontShow();
         } else {
             System.out.println("空的树");
         }
         System.out.println();
     }

    public void midShow() {
        System.out.println("中序遍历：");
        if (root!=null) {
            root.midShow();
        } else {
            System.out.println("空的树");
        }
        System.out.println();
    }

    public void rearShow() {
        System.out.println("后序遍历：");
        if (root!=null) {
            root.rearShow();
        } else {
            System.out.println("空的树");
        }
        System.out.println();
    }

    // 前序查找
    public TreeNode frontSearch(int i) {
         return root.frontSearch(i);
    }

    // 删除子树
    public void delete(int i) {
         if (root.getValue() == i) {
             root = null;
         } else {
             root.delete(i);
         }
    }

}
